Recent improvements in MOS semiconductor technology have resulted in advancement in large scale integrated circuit microprocessors. The latest generation of LSI microprocessors is an order of magnitude more powerful than the previous generation of microprocessors introduced 3 or 4 years ago. The latest generation of microprocessors has 16-bit data paths and 16-bit arithmetic capability, and such microprocessors directly address multiple-megabyte memories. In terms of functional capability and speed, such microprocessors will outperform all but the high end models of current 16-bit minicomputers.
LSI microprocessor design is now at the stage where better implementation techniques are required in order to control complexity and meet tight design schedules. One technique for achieving these goals is to use microprogramming for controlling the processor. Most of the traditionally claimed benefits of microprogramming, for example, regularity (to decrease complexity), flexibility (to ease design changes), and reduced design costs, apply to the implementation problems for current LSI microprocessor design.
Generally, a data processor performs a series of operations upon digital information in an execution unit according to a stored program of instructions. These instructions are often termed "macroinstructions" in order to avoid confusion with the microinstructions contained in the control store of the data processor. The microinstructions are often grouped into microinstruction routines in order to perform various macroinstructions.
A data processor generally includes an arithmeticalogic unit (ALU) for performing arithmetical and logical operations upon digital information in order to execute a macroinstruction. Also, a data processor usually includes a condition code or status register which stores conditional signals reflecting the occurrence of certain conditions within the arithmetic-logic unit, such as zero result, negative result, overflow generation and carry generation. In order to execute a macroinstruction, the date processor may be required to perform two or more arithmetical or logical operations. This would be true, for example, where iterative operations are called for such as add-and-shift routines used to execute a multiply macroinstruction. Even if the same operation is performed by the data processor in two different microcycles, the setting of the condition codes may be controlled differently during the two microcycles. If the control words in the control store are required to specify all of the control signals for the operation to be performed by the ALU and for the setting of the condition codes, the control word will require a large number of bits and thereby increase the size of the control store.
Furthermore, many macroinstructions require different ALU operations but the sequence in which these different operations are performed is the same. For example, an ADD (add) macroinstruction and a SUB (subtract) macroinstruction may enable the ALU on the same microcycle but perform different functions. If a separate microinstruction routine is required for ADD and SUB, the number of words in the control store is increased, again increasing the size of the control store. On the other hand, if the control store contains generalized routines which can be shared by several macroinstructions, then the size of the control store can be reduced, thereby reducing semiconductor chip area and overall cost. Those skilled in the art will appreciate that a data processor which can process a wide variety of macroinstructions while minimizing the size of the control store is a significant improvement over the prior art.